package com.itheima.socket.udp.demo01;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

/**
 * UDP协议接收端的代码实现
 */
public class ReceiveDemo01 {

    /**
     * 实现步骤：
     * 1. 创建DatagramSocket对象(开放一个端口号)
     * 2. 创建DatagramPacket对象(封装要接收的数据)
     * 3. 调用DatagramSocket方法完成数据的接收
     * 4. 解析数据
     * 5. 释放资源
     */
    public static void main(String[] args) throws IOException {

        // 创建DatagramSocket对象： public DatagramSocket(int port)
        DatagramSocket datagramSocket = new DatagramSocket(9999) ;

        // 创建DatagramPacket对象(封装要接收的数据): public DatagramPacket(byte buf[], int length)
        byte[] bytes = new byte[1024];    // 接收发送端所传递过来的数据
        int len = bytes.length ;
        DatagramPacket datagramPacket = new DatagramPacket(bytes , len) ;

        // 调用DatagramSocket方法完成数据的接收
        System.out.println("开始接收数据了................");
        datagramSocket.receive(datagramPacket);                 // 这个方法是一个阻塞方法
        System.out.println("数据已经接收了................");

        // 解析数据
        byte[] data = datagramPacket.getData();         // 获取数据
        int length = datagramPacket.getLength();        // 获取数据的真实长度
        System.out.println(new String(data , 0 , length , "UTF-8"));

        // 释放资源
        datagramSocket.close();
    }

}
